package controlador;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import xml.XMLManager;

public class ControladorGuardar {

	private static ControladorGuardar controlador = new ControladorGuardar();
	
	private ControladorGuardar(){}
	
	public static ControladorGuardar getInstancia() {
		return controlador;
	}

	public void guardar(JFrame ventanaContenedora, String nombreArchivo) throws NoGuardarException, GuardarException 
	{
		ControladorEditor controladorEditor = ControladorEditor.getInstancia();
		
		if (!controladorEditor.getControladorDeAcciones().huboCambios())
			return;
		
		//Custom button text
		Object[] options = {"Si", "No", "Cancelar"};
		
		int n = JOptionPane.showOptionDialog(ventanaContenedora, 
				"Hubo modificaciones en el diagrama actual " + nombreArchivo + 
				" \n¿Desea guardar los cambios?",
				"Guardar",
				JOptionPane.YES_NO_CANCEL_OPTION,
				JOptionPane.QUESTION_MESSAGE,
				null,
				options,
				options[2]);
		
		if (n==0)
		{
			if (!XMLManager.getInstance().serializar(ControladorEditor.getInstancia().getProyectoActual()))
				throw new GuardarException("No se ha podido guardar los cambios.");
 
			return;
		}
		
		if (n==1)
		{
			controladorEditor.getEstadoInicialDeDiagActual().volverAEstadoInicial();
			return;
		}
		
		if (n==2)
			throw new NoGuardarException("No se quiere salir del archivo: "+nombreArchivo);
			
	}
}
